#include "mcu_adc.h"
#include "mcu.h"

void Adc_Init(void)
{
	//-------------------- ADC INIT	------------------------
 	ADC_CSR=0x00;	//禁止转换结束中断，通道0
	ADC_CR1=0X40;	//时钟Fmast/8=2000kHz,转换时间7us,单次转换模式
 	ADC_CR2=0X08;	//右对齐
// 	ADC_TDRL=0X08;	//关闭对应通道IO口施密特触发器
 	ADC_CR1|=0x01;	//开启ADC
	Delay_us(50);	//25    来自delay.h
 	ADC_CR1|=0x01;	//开始转换
	while(ADC_CSR_EOC==0);//等待转换结束
	ADC_CSR_EOC=0;  //清除转换结束标志位
}

//开始一次转换，通道对应的管脚需高阻输入,会关闭ADC中断
u16 Adc_GetOnce(u8 ch)	
{
	ADC_CSR = ch;
	ADC_CR1|=0x01;	//开始转换
	while(ADC_CSR_EOC==0);//等待转换结束
	return ADC_DR;
}

//获取有效的AD值（9次中值滤波）,会关闭ADC中断
u16 Adc_GetValue(u8 ch)	
{
	u8 i;
	u16 a[9];
	
	for(i=0;i<9;i++)
	{
		a[i]=Adc_GetOnce(ch);
	}
	
	return MedianFilter16b9(a);
}




